<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of utilisateur
 *
 * @author zframework
 */
class UtilisateursController extends AppController {

    public function beforeFilter() {

        parent::beforeFilter();
        $this -> Auth -> allow('*');
        
    }

    function login(){
    
        
    }

    function logout(){

        $this-> Session -> setFlash("Vous &ecirc;tes maintenant d&eacute;connect&eacute;.");
        $this -> redirect($this -> Auth-> logout());
        
        
    }

    function profil($idVoir = 0){
        
        // verification de $idVoir
        if (is_numeric($idVoir) == false){
            
            $this -> redirect(array("controller" => "pages","action" => "home"));
            
        }

        $this -> set('id',$idVoir);

        if ($this -> Session -> check('Auth.Utilisateur')){

            $infoUtilisateur = $this -> Session -> read('Auth.Utilisateur');
            
            // ajout dernière connection
            $this -> Utilisateur -> UpdateAll(array(
                        'Utilisateur.date' => "'".date("c")."'"
            ),array(
                        'Utilisateur.id' => $infoUtilisateur["id"]
                    ));
            
            // recupération du pseudo
            $pseudo = $infoUtilisateur["pseudo"];

            // id
            $id = $infoUtilisateur["id"];

            if ($id == $idVoir){

                // chargement profil
                $profil = $this -> Utilisateur -> find('first',array('conditions' => array('Utilisateur.id' => $id)));

                   $profil["Profil"]["image"] = 'avatar/'.$profil["Utilisateur"]["avatar"];

               $this->set("title_for_layout",'Profil de '.$profil["Utilisateur"]["pseudo"]);
               $this -> set('profil',$profil);

            } else {

                $this -> redirect('/utilisateurs/profil/'.$id);

            }


        } else {

            $this -> Session -> setFlash('Il faut ce connecter pour voir cette page','erreur');
            $this -> redirect('/utilisateurs/login');
            
        }


    }

    function ajouter(){

        $this -> loadModel('Profil');
        $this->set("title_for_layout",'Inscription');

        if (empty($this -> data) == false){

            $this -> Profil -> set($this -> data);
            $this -> Utilisateur -> Profil -> set($this -> data);
            
            // securite contre les failles XSS et injection
            App::import('Sanitize');
            $this -> data = Sanitize::clean($this -> data);

            if ($this -> Utilisateur -> saveAll($this -> data,array('validate' => 'first'))){

                    $this -> Session -> setFlash('Votre compte vient d\'&ecirc;tre créé','erreur');
                    $this -> redirect(array('controller' => 'pages','action' =>'home'));
          
            } else {

                $this -> data["Utilisateur"]["mot_passe"] = "";
                $this -> Session -> setFlash('Une erreur est survenu!!','erreur');

            }

        }

    }

    function modifier($id = ""){

        



    }

    function online(){

        $this -> layout = "ajax";
        $infoUtilisateur["pseudo"] = "";
        
        if (Cache::read('online') == false) Cache::write('online',array());

        $UtilisateurOnline = Cache::read("online");

        // verification si connecté
        if ($this -> Session -> check('Auth.Utilisateur')){

            $infoUtilisateur = $this -> Session -> read('Auth.Utilisateur');

        }

            $UtilisateurOnlineNouveau = array();

            foreach ($UtilisateurOnline as $cle => $valeur){

               $date = $UtilisateurOnline[$cle]["date"];

               $dateAncien = time()- 2;

               if ($date >= $dateAncien && $cle != $infoUtilisateur["pseudo"]){

                   $UtilisateurOnlineNouveau[$cle] = $UtilisateurOnline[$cle];

               }


            }

            if ($this -> Session -> check('Auth.Utilisateur')){

                $UtilisateurOnlineNouveau[$infoUtilisateur["pseudo"]]["date"] = time();
                $UtilisateurOnlineNouveau[$infoUtilisateur["pseudo"]]["Auth"] = $infoUtilisateur;

                if (isset($UtilisateurOnline[$infoUtilisateur["pseudo"]]["avatar"]) == false){
                
                    // recupération de l'avatar
                    $liste = $this -> Utilisateur -> find('first',array(
                    'fields' => array(
                        'Utilisateur.avatar'
                    ),
                    'conditions' => array(
                        'Utilisateur.pseudo' => $infoUtilisateur["pseudo"]
                        )));

                     $UtilisateurOnlineNouveau[$infoUtilisateur["pseudo"]]["avatar"] = $liste["Utilisateur"]["avatar"];


                } else {

                    $UtilisateurOnlineNouveau[$infoUtilisateur["pseudo"]]["avatar"] = $UtilisateurOnline[$infoUtilisateur["pseudo"]]["avatar"];

                }

                

                

            }
            
            Cache::delete("online");
            Cache::write("online",$UtilisateurOnlineNouveau);
            $this -> set("online",$UtilisateurOnlineNouveau);




        



    }

    function utilisateur_online($pseudo){


        $this -> layout = "ajax";
        $utilisateurOnline = Cache::read("online");
        if (isset($utilisateurOnline[$pseudo]) == true){

            $this -> set("online",true);

        } else $this -> set("online",false);

        $this -> set('pseudo',$pseudo);


    }
    




}
?>
